package com.petecat.interchan.base.project.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import com.petecat.interchan.base.project.entity.BsProject;
import com.petecat.interchan.base.project.entity.BsProjectTokenRecord;
import com.petecat.interchan.core.mapper.BaseMapper;
import com.petecat.interchan.protocol.base.project.dto.BsProjectQryDTO;
import com.petecat.interchan.protocol.base.project.vo.BsProjectQryVO;
import com.petecat.interchan.protocol.base.project.vo.CompanySelectVO;
import com.petecat.interchan.protocol.base.project.vo.ProjectTreeVO;

@Mapper
@Repository
public interface IProjectMapper extends BaseMapper<BsProject, String>{
	
	/**
	 * 修改项目状态
	 * @param projectId
	 * @param state
	 */
	void updateCompanyStateById(@Param("projectId") String projectId,@Param("state") String state);
	
	/**
	 * 下拉查询项目
	 * @param user 
	 * @return
	 */
	List<CompanySelectVO> queryProjectSelect(@Param("user") String user);
	
	/**
	 * 查询项目下拉树
	 * @param projectQryDTO
	 * @return
	 */
	List<ProjectTreeVO> queryProjectByTree(BsProjectQryDTO projectQryDTO);
	
	/**
	 * 删除项目
	 * @param projectId
	 */
	void deleteProjectById(String projectId);
	
	/**
	 * 通过项目ID去查询token
	 * @param id
	 * @return
	 */
	String getProjectTokenById(@Param("id") String id);
	
	/**
	 * 通过项目ID查询项目信息
	 * @param list
	 * @return
	 */
	List<CompanySelectVO> findProjectByProjectIds(@Param("idList") List<String> list);
	
	/**
	 * 添加项目Token历史表
	 * @param record
	 */
	void saveToken(BsProjectTokenRecord record);
	
	/**
	 * 通过token查询项目名称
	 * @Title: getServerNameByToken   
	 * @Description: TODO(这里用一句话描述这个方法的作用)   
	 * @param: @param token
	 * @param: @return      
	 * @return: String      
	 * @throws
	 */
	String getServerNameByToken(@Param("token") String token);
	
	/**
	 * 通过项目ID查询项目名称
	 * @Title: getNameByProjectId   
	 * @Description: TODO(这里用一句话描述这个方法的作用)   
	 * @param: @param peojectId
	 * @param: @return      
	 * @return: String      
	 * @throws
	 */
	String getNameByProjectId(@Param("peojectId") String peojectId);
	
}
